/*! 
 * 基于jQuery Validation Plugin - v1 .17 .0 - Extension 
 * 常用基础缺省值的设定
 * 使用了一些jeparo模板的css类
 */
(function () {
  $.extend($.validator.messages, {
    required: "必选字段",
    remote: "该信息已经被其他用户占用",
    email: "请输入正确格式的电子邮件",
    url: "请输入合法的网址",
    date: "请输入合法的日期",
    dateISO: "请输入合法的日期 (ISO).",
    number: "请输入合法的数字",
    digits: "只能输入整数",
    creditcard: "请输入合法的信用卡号",
    equalTo: "请再次输入相同的值",
    accept: "请输入拥有合法后缀名的字符串",
    maxlength: jQuery.validator.format("请输入一个 长度最多是 {0} 的字符串"),
    minlength: jQuery.validator.format("请输入一个 长度最少是 {0} 的字符串"),
    rangelength: jQuery.validator.format("请输入 一个长度介于 {0} 和 {1} 之间的字符串"),
    range: jQuery.validator.format("请输入一个介于 {0} 和 {1} 之间的值"),
    max: jQuery.validator.format("请输入一个最大为{0} 的值"),
    min: jQuery.validator.format("请输入一个最小为{0} 的值"),
    pattern: "输入内容不符标准格式或含有非法字符"
  });

  $.validator.setDefaults({
    errorElement: "small", //指定错误提示的css类名，可以自定义错误提示的样式
    errorClass: "invalid-feedback",
    onfocusout: (element) => $(element).valid(), //失去焦点时验证
    onkeyup: (element) => $(element).valid(), //按键时验证
    errorPlacement: function (error, element) { //显示错误信息事件
      var el = element.closest('.form-group').find('.form-control')
      el.next().remove() //删除旧的提示信息
      el.parent().append(error);
    },
    highlight: function (element) { //高亮显示事件
      var el = $(element).closest('.form-group')
      el.removeClass('has-success').addClass('has-danger');
      el.find('.form-control').removeClass('is-valid').addClass('is-invalid')
    },
    success: function (label) { //验证通过事件
      //使用模板提供的css类
      label.closest('.form-group').removeClass('has-danger').addClass('has-success');
      var el = label.closest('.form-group').find('.form-control')
      //使用bootstrap4的css类        
      el.next().remove() //与errorPlacement相似
      el.removeClass('is-invalid').addClass('is-valid')
    }
  });

  $.validator.prototype.cleanForm = function () { //清除自定义验证效果
    $('.form-group').removeClass('has-success').removeClass('has-danger');
    $('.form-control').removeClass('is-valid').removeClass('is-invalid');
  }
})();